package com.zjl.学习.第05章_作业控制.B_作业的停止;

import org.springframework.batch.core.ExitStatus;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.StepExecutionListener;
import org.springframework.batch.item.ExecutionContext;
import org.springframework.stereotype.Component;

/**
 * 步骤监听器
 */
@Component
public class MyStepExecutionListener05 implements StepExecutionListener {

    @Override
    public void beforeStep(StepExecution stepExecution) {

    }

    /**
     * ExitStatus.UNKNOWN //未知，不知道的状态
     * ExitStatus.EXECUTING //执行
     * 表示处理时的连续状态仍在发生，因此不需要采取进一步行动。
     * 用于异步执行场景，其中处理发生在另一个线程或进程，调用者不需要等待结果
     * ExitStatus.COMPLETED //已完成的加工
     * ExitStatus.NOOP //表示没有处理的作业
     * ExitStatus.FAILED  //有误差的已完成处理。
     * ExitStatus.STOPPED  //表示已完成的加工 中断状态停止
     */
    @Override
    public ExitStatus afterStep(StepExecution stepExecution) {

        if(stepExecution.getExecutionContext().get("xx") == null){
            return ExitStatus.STOPPED;
        }
        return stepExecution.getExitStatus();
    }

}
